/**
 * Autores:
 * 
 * Alfredo Lima Porfirio 7236614
 * Diego Gomes da Silva 7656467
 * Jhonata Pereira Martins 7656637
 * 
 * 
 * 
 */

package simuladorso;

import java.util.ArrayList;
import java.util.List;

public class Main {

    /**
     * @param args os argumentos podem ter o numero de processos que serao criados
     * e o tamanho do quantum
     */
    public static void main(String[] args) 
    {
        int max = 10;
        int quantum = 3;
        
        switch(args.length)
        {
            case 0:
            {
                max = 10;
                quantum = 3;
                break;
            }
            case 1:
            {
                max = Integer.parseInt(args[0]);
                break;
            }
            case 2:
            {
                max = Integer.parseInt(args[0]);
                quantum = Integer.parseInt(args[1]);
                break;
            }
            default:
            {
                max = 10;
                quantum = 3;
                break;
            }
        }
        

//        MainMemory mainMemory = new MainMemory(100);
        Scheduler s = new Scheduler(new MainMemory(20), quantum);
        List<Process> p = new ArrayList<>();
        for (int i = 0; i < 3; i++) 
        { 
            // criacao de processos
            p.add(new Process(i, i*i+2, 4+i, 7));
//            p.add(new Process(i, (int)(1 + (Math.random())*max), (int)(1 + (Math.random())*max), (int)(1 + (Math.random())*max)));
        }
        
        System.out.println("ESCALONADOR DE LOTERIA");
        s.addProcessLoteria(p);
        s.execute();
        System.out.println("\n");
        
        /**
        System.out.println("ESCALONADOR ROUND-ROBIN");
        s.addProcessRoundRobin(p);
        s.execute();
        System.out.println("\n");
        
        System.out.println("ESCALONADOR FILA COM PRIORIDADES");
        s.addProcessFilaPrioridades(p);
        s.execute();
        System.out.println("\n");
        
        System.out.println("ESCALONADOR SJF");
        s.addProcessSJF(p);
        s.execute();
        System.out.println("\n");
        
        System.out.println("ESCALONADOR FIFO");
        s.addProcessFIFO(p);
        s.execute();
        */
        

    }
}
